package cn.tedu.spring;

import javax.servlet.http.HttpSession;
import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping("user")
public class UserController {
	
	// http://localhost:8080/springmvc02/reg.do
	@RequestMapping({"reg.do","register.do"})
	public String showReg() {
		System.out.println("UserController.showReg()");
		return "reg";//如果此处返回null，等同于返回路径名，但是，强烈不推荐
	}
	
	// http://localhost:8080/springmvc02/login.do
	@RequestMapping("login.do")
	public String showLogin() {
		System.out.println("UserController.showLogin()");
		return "login";//如果此处返回null，等同于返回路径名，但是，强烈不推荐
	}
	// http://localhost:8080/springmvc02/handle_reg.do
	@RequestMapping("handle_reg.do")
	public String handleReg(User user,ModelMap modelMap) {
		System.out.println("UserController.handleReg()");
		System.out.println(user);
		
		//假設：root用戶名已經被佔用，不允許註冊，其他用戶名註冊均視為成功。
		if ("root".equals(user.getUsername())) {
			String msg = "注册失败，用户名已经被占用";
			modelMap.addAttribute("errorMessage", msg);
			return "error";
		}
		//如果代码能执行到这个位置，就表示注册成功，需要到"登录"页
		//【当前位置】http://localhost:8080/spingmvc02/handle_reg.do
		//【目标位置】http://localhost:8080/spingmvc02/login.do
		return "redirect:../login.do";
		
//		System.out.println("[2] username="+username);
//		System.out.println("[2] password="+password);
//		System.out.println("[2] age="+age);
//		System.out.println("[2] phone="+phone);
//		System.out.println("[2] email="+email);
		
//		String username=request.getParameter("username");
//		//调用getParameter()方法中参数的就是请求参数的名称，也就是页面各输入框的name值
//		String password=request.getParameter("password");//getParameter
//		Integer age=Integer.valueOf(request.getParameter("age"));//getParameter
//		String phone=request.getParameter("phone");//getParameter
//		String email=request.getParameter("email");//getParameter
//		
//		System.out.println("username="+username);
//		System.out.println("password="+password);
//		System.out.println("age="+age);
//		System.out.println("phone="+phone);
//		System.out.println("email="+email);
		
		//return null;//相当于返回"handle_reg"，最后，会打开handle_reg.html页面，
		//此页面目前并打不存在，浏览器会显示500错误，暂且不关心这个问题
	}
	// http://localhost:8080/springmvc02/handle_login.do
		@RequestMapping(path="handle_login.do", method=RequestMethod.POST)
		public String handleLogin(String username, String password, 
				ModelMap modelMap, HttpSession session) {
			System.out.println("UserController.handleLogin()");
			
			System.out.println("username=" + username);
			System.out.println("password=" + password);

			// 模拟登录：假设root/1234是正确的用户名/密码
			// 先判断用户名
			if ("root".equals(username)) {
				// 用户名正确，还需要判断密码
				if ("1234".equals(password)) {
					// 密码也正确，则登录成功
					session.setAttribute("uid", 3366);
					session.setAttribute("username", "root");
					// 【当前路径】http://localhost:8080/springmvc02/user/handle_login.do
					// 【目标路径】http://localhost:8080/springmvc02/main/index.do
					return "redirect:../main/index.do";
				} else {
					// 密码错误，登录失败
					String msg = "[ModelMap] 密码错误";
					modelMap.addAttribute("errorMessage", msg);
					return "error";
				}
			} else {
				// 用户名错误，登录失败
				String msg = "[ModelMap] 用户名不存在";
				modelMap.addAttribute("errorMessage", msg);
				return "error";
			}
		}

	
	
}
